package com.qianfeng.function;

//
//                            _ooOoo_  
//                           o8888888o  
//                           88" . "88  
//                           (| -_- |)  
//                            O\ = /O  
//                        ____/`---'\____  
//                      .   ' \\| |// `.  
//                       / \\||| : |||// \  
//                     / _||||| -:- |||||- \  
//                       | | \\\ - /// | |  
//                     | \_| ''\---/'' | |  
//                      \ .-\__ `-` ___/-. /  
//                   ___`. .' /--.--\ `. . __  
//                ."" '< `.___\_<|>_/___.' >'"".  
//               | | : `- \`.;`\ _ /`;.`/ - ` : | |  
//                 \ \ `-. \_ __\ /__ _/ .-` / /  
//         ======`-.____`-.___\_____/___.-`____.-'======  
//                            `=---='  
//  
//         .............................................  
//                  佛祖镇楼                  BUG辟易  
//          佛曰:  
//                  写字楼里写字间，写字间里程序员；  
//                  程序人员写程序，又拿程序换酒钱。  
//                  酒醒只在网上坐，酒醉还来网下眠；  
//                  酒醉酒醒日复日，网上网下年复年。  
//                  但愿老死电脑间，不愿鞠躬老板前；  
//                  奔驰宝马贵者趣，公交自行程序员。  
//                  别人笑我忒疯癫，我笑自己命太贱；  
//  


import java.util.function.BiConsumer;
import java.util.function.Consumer;

/**
 * Created by Jackiechan on 2022/6/8 14:13
 * Consumer 是一个只有输入参数,没有返回结果的函数接口
 * @author Jackiechan
 * @version 1.0
 * @since 1.0
 */
public class TestConsumer1 {
    public static void main(String[] args) {
//        Consumer consumer=new Consumer() {
//            @Override
//            public void accept(Object o) {
//                System.err.println(o);
//            }
//        };
//        consumer.accept("abc");
        //这种写法的要求,这个接口只有一个未实现的方法,通过这种写法来实现这个方法, 第一个s代表方法的参数,是一个形参->代表这个方法内部要执行什么
        Consumer consumer = s -> System.err.println(s);
        consumer.accept("sqx是个三傻子");

        //这是一种简化的写法, 意思是我们这个接口的对象传递的参数会作为下面这个方法的参数
        Consumer consumer1 = System.err::println;
        consumer1.accept("方式1111111");
        consumer1.accept(12345);
        //指定泛型
        Consumer<Integer> integerConsumer = System.err::println;
        integerConsumer.accept(748748748);


//        BiConsumer biConsumer=new BiConsumer() {
//            @Override
//            public void accept(Object o, Object o2) {
//                System.err.println(o +""+ o2);
//            }
//        };
//        biConsumer.accept("xijiaowang","dejinwu");
    //当我们要重写的方法有两个参数的时候, (first,second) 分别代理两个形参,按照顺序来保持的
        BiConsumer<String, String> stringBiConsumer = (first, second) -> {
            System.err.println(first + "======>" + second);
        };
        stringBiConsumer.accept("xiaotian","buchifan");
    }
}
